Pengenalan
Selamat datang di laman dokumentasi SDK Ios Duitku. Integrasikan SDK ini untuk mulai bertransaksi menggunakan Duitku di aplikasi ios anda.
Alur Transaksi
- Checkout, Client melakukan checkout didalam aplikasi ios kemudian aplikasi mengirimkan request transaksi ke server merchant.
- Request Transaction, server merchant meneruskan request transaksi ke server duitku.
- Get Request Transaction, server duitku mengirimkan request transaksi yang kemudian diterima oleh server merchant.
- Response, Server merchant mengirimkan response ke client.
- Callback Notification, server duitku mengirimkan callback notification kepada merchant.
Environment
Standar IDE untuk pengembangan aplikasi adalah Xcode versi 9 keatas. Untuk lebih jelas, dibawah ini adalah detail spesifikasi
- Xcode version 9 ke atas
- IOS version 11 ke atas
- Swift version: Swift 4 ke atas
item pendukung pengembangan aplikasi dapat diperoleh dalam dokumentasi :
- Contoh project
- Contoh code untuk request transaksi
- Contoh code untuk cek transaksi
- Contoh code untuk payment method
Integrasi Sistem
Tambahkan Librari Duitku SDK ke project merchant
Import Duitku SDK Library ke build gradle diaplikasi anda
IOS SDK Cocoapods Version
pod 'duitku', '~> 1.0'
Installation IOS SDK Cocoapods
* Navigasikan terminal ke direktori root project anda kemudian jalankan pod init untuk membuat podfile. - install command * Buka podfile dan tambahkan Duitku IOS SDK Cocoapods. * Simpan file dan run pod install untuk menginstall Duitku. * Cocopoads akan mendownload dan menginstal duitku. * Tutup project anda dan buka 'yourproject.xcworkspace' di project file anda.
Tambahkan Duitku SDK Class
Untuk mendukung integrasi, merchant membutuhkan Duitku SDK Class untuk menjalankan fungsi SDK diproject merchant
import Duitku SDK Class
import duitku
Initialisasi class
class yourclass : DuitkuClient
Tambahkan Fungsi ini Untuk Mendapatkan Callback Transaksi
override func onSuccess_(status: String, reference: String, amount: String, code: String, merchantOrderId: String) {
//logic here
clearSdkTask()
}
override func onPending_(status: String, reference: String, amount: String, code: String, merchantOrderId: String) {
//logic here
clearSdkTask()
}
override func onCanceled_(status: String, reference: String, amount: String, code: String, merchantOrderId: String) {
//logic here
clearSdkTask()
}
Dari contoh kode diatas, ada 3 perbedaan fungsi untuk menangkap Callback Transaksi,
anda membutuhkan 3 halaman untuk menampilkan status transaksi ke customer anda.
On viewWillAppear
override func viewWillAppear(_ animated: Bool) {
runPayment(self)
self.navigationController?.isNavigationBarHidden = false
self.navigationItem.title = "Order" //optional
}
Request Transaksi ke Server Merchant
Tambahkan method ini untuk melakukan Request Transaksi Ke Server Merchant
func settingMerchant(){
Util.merchantNotification = true
DuitkuKit.data(
paymentAmount: "100000" //example //your payment amount
,productDetails: "Test Pay with duitku" //
,email: "[email protected]" //your email
,phoneNumber: "08123456789" //your customer phone number
,additionalParam: "" //optional
,merchantUserInfo: "" //optional
,customerVaName: "John Doe" // display name on bank confirmation display
,callbackUrl: 'http://example.com/callback'; // url for callback
,returnUrl: 'http://example.com/return'; // url for return
,expiryPeriod: "10" // set the expired time in minutes
,firstName: "john"
,lastName: "doe"
,alamat: "Jl. Kembangan Raya"
,city: "jakarta"
,postalCode: "11530"
,countryCode: "ID"
,merchantOrderId: "" //can empty if merchant order id on web server
)
//can loop here
ItemDetails.data(name: "sepatu" , price: 100000 , quantity: 1) //optional
// base url
BaseRequestDuitku.data(
baseUrlPayment: "http://server-merchant/api/" //base url merchant server
,requestTransaction: "requestTransaksi.php" //endpoint
,checkTransaction: "checktransaksi.php" //endpoint
,listPayment: "listPayment.php" //endpoint
)
}
Function | Description |
---|---|
Util.merchantNotification | digunakan untuk set notifikasi dari Duitku atau dari Merchant. Set true untuk notifikasi dari merchant, atau false untuk notifikasi dari merchant |
runPayment(self) | digunakan untuk menjalankan SDK Duitku. |
baseUrlPayment | digunakan untuk set merchant site url untuk mengakses modul request transakasi dan modul cek transaksi. |
requestTransaction | digunakan untuk set modul request transaksi. |
checkTransaction | digunakan untuk set modul cek transaksi. |
listPayment | digunakan untuk set modul API metode pembayaran. |
paymentAmount | digunakan untuk memasukan nominal transaksi. |
productDetails | digunakan untuk memasukan detail produk transaksi. |
digunakan untuk memasukan alamat email customer merchant, mandatory. | |
phoneNumber | digunakan untuk memasukan nomor telepon customer merchant, mandatory. |
additionalParam | digunakan untuk memasukan parameter tambahan. |
merchantUserInfo | digunakan untuk memasukan info customer merchant. |
customerVaName | digunakan untuk set nama customer di VA, customer merchant dapat melihat nama mereka di mobile banking atau ATM, fungsi ini hanya digunakan untuk channel pembayaran VA. |
expiryPeriod | digunakan untuk set waktu expiry pembayaran. |
callbackUrl | digunakan untuk set merchant callback url, ini harus di arahkan ke server merchant untuk mendapatkan atau memperbarui status transaksi di database merchant |
returnUrl | digunakan untuk set merchant return url, ini harus di arahkan ke server merchant untuk redirect setelah pembayaran selesai |
Memulai Payment Function
Memanggil Fungsi StartPayment
startPayment(self);
Merchant dapat memanggil fungsi startPayment() untuk melanjutkan process pembayaran.
Penanganan Error
Getting Webkitview Exception
jika anda mendapatkan eror seperti ini, silahkan tambahkan Webkit framework ke target project anda
Getting Navigation Controller Exception
silahkan untuk menambahkan navigation controller pada viewcontroller di project anda
Getting Blank When checkout payment
silahkan tambahkan script berikut di info.plist file project anda
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Sisi Server Merchant
dibawah ini adalah modul server merchant untuk transaksi dengan Duitku Ios SDK
Deskripsi | Value |
---|---|
Alamat URL Server Merchant | Example, https://www.merchantsite.com |
Permintaan Transaksi | unduh |
Cek Status Transaksi | unduh |
Daftar Kanal Pembayaran | unduh |
Contoh Project
Berikut contoh project Sample-project